package com.leetcode;

import com.leetcode.common.TreeNode;

/**
 * 100. 相同的树
 * 深度优先搜索
 *
 * @author fy
 * @date 2022-04-17 17:36
 */
public class Solution100 {

    public boolean isSameTree(TreeNode p, TreeNode q) {
        // 如果两个二叉树都为空，则两个二叉树相同
        if (p == null && q == null) {
            return true;
        }
        // 如果两个二叉树中有且只有一个为空，则两个二叉树一定不相同
        if (p == null || q == null) {
            return false;
        }
        // 如果两个二叉树都不为空，那么首先判断它们的根节点的值是否相同，若不相同则两个二叉树一定不同
        if (p.val != q.val) {
            return false;
        }
        // 若相同，再分别判断两个二叉树的左子树是否相同以及右子树是否相同
        return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
    }

}
